﻿using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace TheOliver.Controls.DigitalDisplay
{
    public partial class SingleChar : UserControl
    {
        public SingleChar()
        {
            InitializeComponent();
        }

        private string _character;
        public string Character 
        {
            get
            {
                return _character;
            }
            set
            {
                _character = value;
                SetDisplay(_character);
            }
        }

        public Color OnColor
        {
            get { return (Color)GetValue(OnColorProperty); }
            set { SetValue(OnColorProperty, value); }
        }

        public static readonly DependencyProperty OnColorProperty =
            DependencyProperty.Register(
                "OnColor", 
                typeof(Color), 
                typeof(SingleChar), 
                new PropertyMetadata(Colors.Red));

        public Color OffColor
        {
            get { return (Color)GetValue(OffColorProperty); }
            set { SetValue(OffColorProperty, value); }
        }

        // Using a DependencyProperty as the backing store for OffColor.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty OffColorProperty =
            DependencyProperty.Register(
                "OffColor", 
                typeof(Color), 
                typeof(SingleChar), 
                new PropertyMetadata(Colors.Gray));

        private void SetDisplay(string character)
        {
            int i = int.Parse(character);

            if (i == 0)
            {
                _1._path.Fill = new SolidColorBrush(this.OnColor);
                _2._path.Fill = new SolidColorBrush(this.OnColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OffColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 1)
            {
                _1._path.Fill = new SolidColorBrush(this.OffColor);
                _2._path.Fill = new SolidColorBrush(this.OffColor);
                _3._path.Fill = new SolidColorBrush(this.OffColor);
                _4._path.Fill = new SolidColorBrush(this.OffColor);
                _5._path.Fill = new SolidColorBrush(this.OffColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 2)
            {
                _1._path.Fill = new SolidColorBrush(this.OffColor);
                _2._path.Fill = new SolidColorBrush(this.OnColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OffColor);
            }
            else if (i == 3)
            {
                _1._path.Fill = new SolidColorBrush(this.OffColor);
                _2._path.Fill = new SolidColorBrush(this.OffColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 4)
            {
                _1._path.Fill = new SolidColorBrush(this.OnColor);
                _2._path.Fill = new SolidColorBrush(this.OffColor);
                _3._path.Fill = new SolidColorBrush(this.OffColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OffColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 5)
            {
                _1._path.Fill = new SolidColorBrush(this.OnColor);
                _2._path.Fill = new SolidColorBrush(this.OffColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OffColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 6)
            {
                _1._path.Fill = new SolidColorBrush(this.OnColor);
                _2._path.Fill = new SolidColorBrush(this.OnColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OffColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 7)
            {
                _1._path.Fill = new SolidColorBrush(this.OffColor);
                _2._path.Fill = new SolidColorBrush(this.OffColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OffColor);
                _5._path.Fill = new SolidColorBrush(this.OffColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 8)
            {
                _1._path.Fill = new SolidColorBrush(this.OnColor);
                _2._path.Fill = new SolidColorBrush(this.OnColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
            else if (i == 9)
            {
                _1._path.Fill = new SolidColorBrush(this.OnColor);
                _2._path.Fill = new SolidColorBrush(this.OffColor);
                _3._path.Fill = new SolidColorBrush(this.OnColor);
                _4._path.Fill = new SolidColorBrush(this.OnColor);
                _5._path.Fill = new SolidColorBrush(this.OnColor);
                _6._path.Fill = new SolidColorBrush(this.OnColor);
                _7._path.Fill = new SolidColorBrush(this.OnColor);
            }
        }
    }
}
